package edu.pe.cayetano.model.bo;

import org.apache.commons.beanutils.DynaBean;

import ws.synopsis.frmwrk.common.BResult;
import edu.pe.cayetano.dao.OperacionesComunesDAO;
import edu.pe.cayetano.dao.PlanTratamientoDAO;
import edu.pe.cayetano.framework.BusinessException;
import edu.pe.cayetano.framework.Configuration;
import edu.pe.cayetano.seccd.constantes.ConstantesSECCD;
import edu.pe.cayetano.util.Utilitario;
import edu.pe.cayetano.util.UtilitarioSQLQuery;

public class PresupuestoDentalBO extends BaseBO{


	public StringBuffer estableceQuery(DynaBean dyna){
		StringBuffer 			query 			= new StringBuffer();
		String criterio		= null;
		if(Utilitario.validaAtributoDynaBean(dyna, "criterio"))
			criterio=(String)dyna.get("criterio");
		String campo		= (String)dyna.get("optCampo");
		String operacion	= (String)dyna.get("operacion");
		
		if(operacion.equalsIgnoreCase(ConstantesSECCD.OPERACION_BUSQUEDA)){
			if(campo.equalsIgnoreCase("todos")){
				query = UtilitarioSQLQuery.devuelveListadoPresupuestos();
			}else{
				query = UtilitarioSQLQuery.devuelveListadoPresupuestosCabecera();
				if(campo.equalsIgnoreCase("fecha_registro")){
					campo="DATE_FORMAT(PT.FECHA_REGISTRO,'%Y-%m-%d')";
					query.append(" WHERE "+campo+" LIKE '%"+criterio+"%'");
				}
				else if(campo.equalsIgnoreCase("fecha_vigencia")){
					campo="DATE_FORMAT(ADDDATE(PT.FECHA_REGISTRO, INTERVAL 90 DAY),'%Y-%m-%d')";
					query.append(" WHERE "+campo+" LIKE '%"+criterio+"%'");
				}
				else{
					query.append(" WHERE UPPER("+campo+") LIKE '%"+criterio.toUpperCase()+"%'");
				}
				query.append(UtilitarioSQLQuery.devuelveListadoPresupuestosGroup());
			}
		}
		if(operacion.equalsIgnoreCase(ConstantesSECCD.OPERACION_LISTADO)){
			query= UtilitarioSQLQuery.devuelveListadoPresupuestos();
		}
		System.out.println("21:"+query.toString());
		return query;
	}

	public StringBuffer estableceQuery(String operacion,String campo,String criterio){
		StringBuffer 			query 			= new StringBuffer();
		if(operacion.equalsIgnoreCase(ConstantesSECCD.OPERACION_BUSQUEDA)){
			if(campo.equalsIgnoreCase("todos")){
				query= UtilitarioSQLQuery.devuelveListadoPresupuestos();
			}else{
				query= UtilitarioSQLQuery.devuelveListadoPresupuestosCabecera();
				query.append(" WHERE UPPER("+campo.toUpperCase()+") LIKE '%"+criterio.toUpperCase()+"%'");
				query= UtilitarioSQLQuery.devuelveListadoPresupuestosGroup();
			}
		}
		if(operacion.equalsIgnoreCase(ConstantesSECCD.OPERACION_LISTADO)){
			query= UtilitarioSQLQuery.devuelveListadoPresupuestos();
		}
		System.out.println("1:"+query.toString());
		return query;
	}
	
	public BResult listarPresupuestoDental() throws BusinessException{
		BResult 				retSalida		= null;
		StringBuffer 			query 			= new StringBuffer(); 
		OperacionesComunesDAO	operacionesDAO	= null;
		try{
			query = estableceQuery(ConstantesSECCD.OPERACION_LISTADO,"","");
			conectar();
			operacionesDAO	 	= new OperacionesComunesDAO(conn);
			retSalida 	= operacionesDAO.listado(query);
		}catch(Exception e){
			retSalida = new BResult();
			retSalida.setCode(-1);
			retSalida.setMessage("[PresupuestoDentalBO] error en metodo listarCita generado por:"+e.getMessage());
		}finally{
			try{
				desconectar();
			}catch(Exception e){
				retSalida = new BResult();
				retSalida.setCode(-1);
				retSalida.setMessage("[PresupuestoDentalBO] error en metodo listarCita generador po:"+e.getMessage());
			}
		}
		return retSalida;
	}

	public BResult buscarPresupuestoDental(DynaBean dyna) throws BusinessException{
		BResult 				retSalida		= null;
		OperacionesComunesDAO	operacionesDAO	= null;
		StringBuffer 			query 			= new StringBuffer(); 
		try{
			query = estableceQuery(dyna);
			conectar();
			operacionesDAO	 	= new OperacionesComunesDAO(conn);
			retSalida 			= operacionesDAO.listado(query);
		}catch(Exception e){
			retSalida = new BResult();
			retSalida.setCode(-1);
			retSalida.setMessage("[PresupuestoDentalBO] error en metodo buscarPresupuestoDental generado por:"+e.getMessage());
		}finally{
			try{
				desconectar();
			}catch(Exception e){
				retSalida = new BResult();
				retSalida.setCode(-1);
				retSalida.setMessage("[PresupuestoDentalBO] error en metodo buscarPresupuestoDental generador por:"+e.getMessage());
			}
		}
		return retSalida;
	}
	public BResult getDetallePresupuesto(DynaBean dyna) throws BusinessException{
		BResult 				retSalida		= null;
		PlanTratamientoDAO		planDAO			= new PlanTratamientoDAO(conn);;
		StringBuffer 			query 			= new StringBuffer(); 
		try{
			query = estableceQuery(dyna);
			conectar();
			retSalida 			= planDAO.buscarPlanTratamientoEspecifico(Utilitario.getPropertyDynaBean(dyna,"codigo"));
		}catch(Exception e){
			retSalida = new BResult();
			retSalida.setCode(-1);
			retSalida.setMessage("[PresupuestoDentalBO] error en metodo buscarPresupuestoDental generado por:"+e.getMessage());
		}finally{
			try{
				desconectar();
			}catch(Exception e){
				retSalida = new BResult();
				retSalida.setCode(-1);
				retSalida.setMessage("[PresupuestoDentalBO] error en metodo buscarPresupuestoDental generador por:"+e.getMessage());
			}
		}
		return retSalida;
	}
}	
